package com.hfzy.ihk.facade.calldata.entity;

import com.hfzy.ihk.common.facade.BaseEntity;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;

import java.util.Map;

/**
 * 呼叫任务详情：
 *  对整个呼叫任务的通话记录进行统计的结果
 * @author wws
 */
@Document(indexName = "#{elasticSearchConfig.indexName()}_call_task_detail",shards = 24,replicas = 2, type = "data")
public class CallTaskDetail implements BaseEntity {

    private static final long serialVersionUID = 1L;

    /**直接使用呼叫任务包ID作为主键*/
    @Id
    private String callTaskId;

    private Long version;

    /**已拨拨打数量*/
    private int progress;
    /**任务包中号码总数*/
    private int size;

    /**电话接通率*/
    private int connectedRate;
    /**总通话时长*/
    private int callTimeLength;

    /*-------------接听状态统计----------------*/
    /**电话接通次数*/
    private int connectedTimes;
    /**电话拒接次数*/
    private int rejectTimes;
    /**电话号码次数*/
    private int nullTimes;
    /**电话关机次数*/
    private int closeTimes;
    /**电话占线通次数*/
    private int inUseTimes;
    /**电话黑名单次数*/
    private int blackNameTimes;
    /**电话停机次数*/
    private int stopUseTimes;
    /**电话无人接听次数*/
    private int noOneReceiveTimes;
    /**电话号码欠费次数*/
    private int noMoneyTimes;
    /**电话号无法接通次数*/
    private int notConnectTimes;
    /**外呼失败次数*/
    private int callFailTimes;
    /**挂机次数*/
    private int onHookTimes;


    /*--------------通话时长统计-------%--------*/
    /** [0,20S) */
    private int callTimeLengthA;
    /** [20S,60S) */
    private int callTimeLengthB;
    /** [1,5M) */
    private int callTimeLengthC;
    /** [5,] */
    private int callTimeLengthD;

    /*--------------对话轮次统计--------%-------*/
    /** [1,3] */
    private int roundTimesA;
    /** [4,6) */
    private int roundTimesB;
    /** [7,10] */
    private int roundTimesC;
    /** [11,] */
    private int roundTimesD;
    /*--------------客户等级统计--------%-------*/

    private int levelA;
    private int levelB;
    private int levelC;
    private int levelD;
    private int levelE;
    private int levelF;

    /*--------------关键词统计---------------*/
    Map<String,Integer> wordCount;

    /*重播次数*/
    private int replayFrequency;


    @Override
    public String getId() {
        return callTaskId;
    }

    public Long getVersion() {
        return version;
    }

    public void setVersion(Long version) {
        this.version = version;
    }

    public String getCallTaskId() {
        return callTaskId;
    }

    public void setCallTaskId(String callTaskId) {
        this.callTaskId = callTaskId;
    }

    public int getProgress() {
        return progress;
    }

    public void setProgress(int progress) {
        this.progress = progress;
    }

    public int getSize() {
        return size;
    }

    public void setSize(int size) {
        this.size = size;
    }

    public int getConnectedRate() {
        return connectedRate;
    }

    public void setConnectedRate(int connectedRate) {
        this.connectedRate = connectedRate;
    }

    public int getConnectedTimes() {
        return connectedTimes;
    }

    public void setConnectedTimes(int connectedTimes) {
        this.connectedTimes = connectedTimes;
    }

    public int getRejectTimes() {
        return rejectTimes;
    }

    public void setRejectTimes(int rejectTimes) {
        this.rejectTimes = rejectTimes;
    }

    public int getNullTimes() {
        return nullTimes;
    }

    public void setNullTimes(int nullTimes) {
        this.nullTimes = nullTimes;
    }

    public int getCloseTimes() {
        return closeTimes;
    }

    public void setCloseTimes(int closeTimes) {
        this.closeTimes = closeTimes;
    }

    public int getCallTimeLength() {
        return callTimeLength;
    }

    public void setCallTimeLength(int callTimeLength) {
        this.callTimeLength = callTimeLength;
    }

    public int getRoundTimesA() {
        return roundTimesA;
    }

    public void setRoundTimesA(int roundTimesA) {
        this.roundTimesA = roundTimesA;
    }

    public int getRoundTimesB() {
        return roundTimesB;
    }

    public void setRoundTimesB(int roundTimesB) {
        this.roundTimesB = roundTimesB;
    }

    public int getRoundTimesC() {
        return roundTimesC;
    }

    public void setRoundTimesC(int roundTimesC) {
        this.roundTimesC = roundTimesC;
    }

    public int getRoundTimesD() {
        return roundTimesD;
    }

    public void setRoundTimesD(int roundTimesD) {
        this.roundTimesD = roundTimesD;
    }

    public int getInUseTimes() {
        return inUseTimes;
    }

    public void setInUseTimes(int inUseTimes) {
        this.inUseTimes = inUseTimes;
    }

    public int getBlackNameTimes() {
        return blackNameTimes;
    }

    public void setBlackNameTimes(int blackNameTimes) {
        this.blackNameTimes = blackNameTimes;
    }

    public int getStopUseTimes() {
        return stopUseTimes;
    }

    public void setStopUseTimes(int stopUseTimes) {
        this.stopUseTimes = stopUseTimes;
    }

    public int getNoOneReceiveTimes() {
        return noOneReceiveTimes;
    }

    public void setNoOneReceiveTimes(int noOneReceiveTimes) {
        this.noOneReceiveTimes = noOneReceiveTimes;
    }

    public int getNoMoneyTimes() {
        return noMoneyTimes;
    }

    public void setNoMoneyTimes(int noMoneyTimes) {
        this.noMoneyTimes = noMoneyTimes;
    }

    public int getNotConnectTimes() {
        return notConnectTimes;
    }

    public void setNotConnectTimes(int notConnectTimes) {
        this.notConnectTimes = notConnectTimes;
    }

    public int getCallFailTimes() {
        return callFailTimes;
    }

    public void setCallFailTimes(int callFailTimes) {
        this.callFailTimes = callFailTimes;
    }

    public int getOnHookTimes() {
        return onHookTimes;
    }

    public void setOnHookTimes(int onHookTimes) {
        this.onHookTimes = onHookTimes;
    }

    public int getCallTimeLengthA() {
        return callTimeLengthA;
    }

    public void setCallTimeLengthA(int callTimeLengthA) {
        this.callTimeLengthA = callTimeLengthA;
    }

    public int getCallTimeLengthB() {
        return callTimeLengthB;
    }

    public void setCallTimeLengthB(int callTimeLengthB) {
        this.callTimeLengthB = callTimeLengthB;
    }

    public int getCallTimeLengthC() {
        return callTimeLengthC;
    }

    public void setCallTimeLengthC(int callTimeLengthC) {
        this.callTimeLengthC = callTimeLengthC;
    }

    public int getCallTimeLengthD() {
        return callTimeLengthD;
    }

    public void setCallTimeLengthD(int callTimeLengthD) {
        this.callTimeLengthD = callTimeLengthD;
    }

    public int getLevelA() {
        return levelA;
    }

    public void setLevelA(int levelA) {
        this.levelA = levelA;
    }

    public int getLevelB() {
        return levelB;
    }

    public void setLevelB(int levelB) {
        this.levelB = levelB;
    }

    public int getLevelC() {
        return levelC;
    }

    public void setLevelC(int levelC) {
        this.levelC = levelC;
    }

    public int getLevelD() {
        return levelD;
    }

    public void setLevelD(int levelD) {
        this.levelD = levelD;
    }

    public int getLevelE() {
        return levelE;
    }

    public void setLevelE(int levelE) {
        this.levelE = levelE;
    }

    public int getLevelF() {
        return levelF;
    }

    public void setLevelF(int levelF) {
        this.levelF = levelF;
    }

    public Map<String, Integer> getWordCount() {
        return wordCount;
    }

    public void setWordCount(Map<String, Integer> wordCount) {
        this.wordCount = wordCount;
    }

    public int getReplayFrequency() {
        return replayFrequency;
    }

    public void setReplayFrequency(int replayFrequency) {
        this.replayFrequency = replayFrequency;
    }
}
